//package com.github.zmzhoustar.webshell.utils;
//
//import org.java_websocket.client.WebSocketClient;
//import org.java_websocket.drafts.Draft_6455;
//import org.java_websocket.handshake.ServerHandshake;
//
//import java.net.URI;
//
///**
// * 与服务端建立websocket连接
// */
//public class WebSocketConnectionUtil {
//
//    //客户端对象
//    public static WebSocketClient client;
//
//    //服务器返回的结果内容
//    public static StringBuilder outPut = new StringBuilder();
//
//    //命令关键字
//    public static String commandKey = "";
//
//    //命令完整内容
//    public static String commandContext = "";
//
//    //ip
//    private static final String host = "192.168.5.227";
//
//    //端口号
//    private static final int port = 22;
//
//    //用户名
//    private static final String username = "gosadmin";
//
//    //密码
//    private static final String password = "oS0HxIxah4FTCzG2x20t9g==";
//
//    //url
//    private static final String url = "ws://" + host + ":6375/shell";
//
//    public static WebSocketClient getClient() {
//        try {
//            //创建客户端连接对象
//            client = new WebSocketClient(new URI(url), new Draft_6455()) {
//
//                /**
//                 * 建立连接调用
//                 */
//                @Override
//                public void onOpen(ServerHandshake serverHandshake) {
////                    System.out.println("建立连接");
//                    send("{\"operate\":\"connect\",\"host\":\"" + host + "\",\"port\":\"" + port + "\",\"username\":\"" + username + "\",\"password\":\"" + password + "\"}");
//                }
//
//                /**
//                 * 收到服务端消息调用
//                 */
//                @Override
//                public void onMessage(String message) {
////                    System.out.println("收到服务端消息: " + message);
//                    outPut.append(message);
//                }
//
//                /**
//                 * 断开连接调用
//                 */
//                @Override
//                public void onClose(int code, String reason, boolean remote) {
////                    System.out.println("关闭连接: " + "code = " + code + ", reason = " + reason + ", remote = " + remote);
//                    System.out.println("WebSocket断开连接");
//                }
//
//                /**
//                 * 连接报错调用
//                 */
//                @Override
//                public void onError(Exception ex) {
//                    System.out.println("WebSocket连接错误: " + ex.getMessage());
//                    ex.printStackTrace();
//                }
//            };
//            //请求与服务端建立连接
//            client.connect();
//            //判断连接状态，0为请求中  1为已建立  其它值都是建立失败
//            while (client.getReadyState().ordinal() == 0) {
//                try {
//                    Thread.sleep(200);
//                } catch (Exception e) {
//                    System.out.println("延迟操作出现问题，但并不影响功能");
//                }
//            }
//            //连接状态不再是0请求中，判断建立结果是不是1已建立
//            if (client.getReadyState().ordinal() == 1) {
////                System.out.println("连接成功");
//                return client;
//            }
//        } catch (Exception e) {
//            System.out.println("WebSocket客户端初始化错误: " + e.getMessage());
//        }
//        return null;
//    }
//
//    //命令补全时 和 直接执行sh命令 的返回内容解析
//    public static StringBuilder getMessage() {
//        // 将 StringBuilder 转换为字符串，然后按行分割
//        String[] lines = outPut.toString().split("\n", -1);
//        // 去除第一行和最后一行
//        StringBuilder newContent = new StringBuilder();
//        for (int i = 1; i < lines.length -1; i++) {
//            newContent.append(lines[i]);
//            if (i < lines.length - 2) {
//                newContent.append("\n");
//            }
//        }
//        outPut = new StringBuilder();
//        return newContent;
//    }
//
//    //路径补全时 一次tab的返回内容解析
//    public static StringBuilder getMesByPartIdenticalPre() {
//        String completeMessage = String.valueOf(outPut)
//                .replace("(base) [gosadmin@master01 ~]$ ", "")
//                .replaceAll("\u0007", "")
//                .substring(commandKey.length() + 1)
//                .trim();
//        outPut = new StringBuilder();
//        return new StringBuilder(completeMessage);
//    }
//
//
//    //路径补全时 两次tab的返回内容解析
//    public static StringBuilder getMesByAllIdenticalPre() {
//        String completeMessage = String.valueOf(outPut)
//                .replace("(base) [gosadmin@master01 ~]$ " + commandContext, "")
//                .trim();
//        outPut = new StringBuilder();
//        return new StringBuilder(completeMessage);
//    }
//
//}
//
//
